<template>
	<view class="search">
		<view class="searchtop">
			<!-- 基本用法 -->
			<uni-search-bar @confirm="myconfirm" v-model="key" @input="myinput" placeholder="请输入需要搜索的商品">
			</uni-search-bar>
		</view>
		<!-- 搜索建议列表 -->
		<view class="thinkList" v-if="thinkList.length > 0">
			<view @click="toDetail(item.goods_id)" class="item" v-for="(item, index) in thinkList" :key="index">
				<view class="left">
					{{ item.goods_name }}
				</view>
				<view class="right">
					<uni-icons type="right" size="20"></uni-icons>
				</view>
			</view>
		</view>
		<!-- 历史搜索 -->
		<view class="history" v-else>
			<view class="title">
				<text>历史搜索</text>
				<uni-icons @click="clearHistory" color="#cccccc" type="clear" size="20"></uni-icons>
			</view>
			<view class="box">
				<view @click="toList(item)" class="item" v-for="(item, index) in historyList" :key="index">
					{{ item }}
				</view>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				// 设置一个定时器
				timer: null,
				// 搜索建议的数据
				thinkList: [],
				// 搜索历史记录
				historyList: [],
				// 定一个一个key和input双向绑定
				key: '',
			};
		},
		onLoad() {
			// 页面一打开获取本地存储的历史记录
			this.historyList = uni.getStorageSync('history') || []
		},
		methods: {
			// 点击历史记录的数据跳转到商品列表
			toList(item){
				uni.navigateTo({
					url:`/pages/list/list?key=${item}`
				})
			},
			// 清空历史记录
			clearHistory() {
				uni.showModal({
					title: '警告',
					content: '确定要删除历史记录吗',
					success: res => {
						if (res.confirm) {
							uni.removeStorageSync('history')
							this.historyList = []
						} else if (res.cancel) {
							console.log('用户点击取消')
						}
					}
				})
			},
			// 输入框的 “回车” 事件
			myconfirm(e) {
				// e.value是输入框中的类容
				uni.navigateTo({
					url: `/pages/list/list?key=${e.value}`
				})
				// 将搜索记录保存起来
				this.historyList.unshift(e.value)
				// 数组去重
				this.historyList = [...new Set(this.historyList)]
				// 将数据存储持久化
				uni.setStorageSync('history', this.historyList)
			},
			myinput(key) {
				// 防抖
				// 清除定时器
				clearTimeout(this.timer)
				// 判断 key 是否为空
				if (key === '') {
					return
				}
				// 重新设置定时器
				this.timer = setTimeout(() => {
					// 执行逻辑代码
					// console.log('执行联想的操作')
				}, 300)
				// 获取搜索建议的列表
				this.getThinkList(key)
			},
			// 获取搜索建议列表的数据源
			async getThinkList(key) {
				const res = await uni.$http.get('/api/public/v1/goods/search', {
					query: key
				})
				// console.log(res)
				this.thinkList = res.data.message.goods
			},
			// 点击跳转到商品详情页
			toDetail(id) {
				uni.navigateTo({
					url: `/pages/goods_detail/main?goods_id=${id}`
				})
			}
		},
		onHide() {
			// 将输入框清空
			this.key = '',
				// 将搜索的建议数据清空
				this.thinkList = []
		}
	}
</script>

<style lang="scss">
	.searchtop {
		background-color: #eeeeee;
		position: sticky;
		top: 0;
		left: 0;
		z-index: 999;
	}

	.thinkList {
		padding: 10rpx;

		.item {
			font-size: 14px;
			height: 40px;
			line-height: 40px;
			display: flex;
			flex-wrap: nowrap;
			justify-content: space-between;

			.left {
				white-space: nowrap;
				overflow: hidden;
				text-overflow: ellipsis;
			}
		}
	}

	.history {
		padding: 0 20rpx;

		.title {
			display: flex;
			justify-content: space-between;
			line-height: 80rpx;

			text {
				font-size: 36rpx;
			}
		}

		.box {
			display: flex;
			flex-wrap: wrap;

			.item {
				margin-right: 40rpx;
				background-color: #dddddd;
				padding: 16rpx;
				margin-bottom: 20rpx;
			}
		}
	}
</style>
